package main

import "fmt"

func main() {
	//这里，捕获不了其他协程的panic
	//可以这么理解，panic是协程内部的，要么在内部捕获，要么往外抛给goRuntime。协程与协程之间么有继承关系，所以不能捕获，哪怕是main
	defer func() {
		if r := recover(); r != nil {
			fmt.Println("~~~~~~~~~~~~main recovering...", r)
		}
	}()
	go func() {
		//defer func() {
		//	if r := recover(); r != nil {
		//		fmt.Println("goroutine recovering...", r)
		//	}
		//}()

		panic("goroutine panic...")
	}()

	fmt.Println("-------main")
}
